package mtt.us.client.views.fachbereich.matrikel;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


import mtt.us.client.events.SetModelDataEvent;
import mtt.us.dto.MatrikelDTO;
import mtt.us.dto.StudiengangDTO;
import mtt.us.hmvcFramework.client.hmvc.view.GuiView;

import com.google.gwt.user.client.HistoryListener;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.Hyperlink;
import com.google.gwt.user.client.ui.Label;

import hmvc4gwt.client.event.HmvcEvent;

public class MatrikelView extends GuiView implements HistoryListener {

	/**
	 * enthält alle Objekt den Listener beinhalten
	 */
	private Map mapEvents = new HashMap();
	
	public void doInitImpl() {
		
		getController().register(SetModelDataEvent.class, this);
		
//		History.addHistoryListener(this);
	}

	public void handleEvent(HmvcEvent event) {
		
		if (event instanceof SetModelDataEvent) {
			SetModelDataEvent setModelDataEvent = (SetModelDataEvent) event;
			
			if (setModelDataEvent.getPayload() instanceof StudiengangDTO) {
				refreshTableMatrikel((StudiengangDTO) setModelDataEvent.getPayload());
			}
		}
	}

	
	/**
	 * aktualisiert die Liste mit den Fachbereichen
	 * 
	 * @param listMatrikel
	 */
	private void refreshTableMatrikel(StudiengangDTO studiengang) {
		
		clear();

		FlexTable tableMatrikel = new FlexTable();
		
		tableMatrikel.setWidget(0, 0, new Label("Matrikel"));
		tableMatrikel.setWidget(0, 1, new Label("aktueller Stundenplan"));
		tableMatrikel.setWidget(0, 2, new Label("Stundenpläne (gesamt)"));
		
		List listMatrikel = studiengang.getListMatrikel();
		
		int i = 1;
		Iterator iterator = listMatrikel.iterator();
		while (iterator.hasNext()) {
			MatrikelDTO matrikel = (MatrikelDTO) iterator.next();

			/*
			 * Matrikelname hinzufügen
			 */
			Hyperlink linkTitle = new Hyperlink(matrikel.getName(),
					"Matrikel=" + matrikel.getId());
			linkTitle.setStylePrimaryName("indexFachbereichTitle");
			
			tableMatrikel.setWidget(i, 0, linkTitle);
			
			/*
			 * aktuellen Stundenplan eintragen
			 */
			Hyperlink linkStundenplan = new Hyperlink("WS07/08", "Stundenplan=1");
			linkStundenplan.setStylePrimaryName("indexFachbereichTitle");
			
			tableMatrikel.setWidget(i, 1, linkStundenplan);
			
			/*
			 * Anzahl der Stundenpläne eintragen
			 */
			
//			tableMatrikel.setWidget(i, 2, new Label("" + matrikel.getListStundenplaene().size()));
			
			tableMatrikel.setWidget(i, 2, new Label("4"));
					
			add(tableMatrikel);
			
			i++;
		}
	}

	public void onHistoryChanged(String historyToken) {
		// TODO Auto-generated method stub
		
	}
}
